A New Way of Debugging Lisp Programs
نویسندگان
چکیده
A major cause of software unreliability is the misapplication of primitive operations, such as taking the car of nil, dividing by zero, or using an invalid array index. These errors are traditionally discovered by extensive testing and debugging, but this approach is unsatisfactory because it is time-consuming and may not identify all potential errors. We suggest to address this problem with sophisticated static debugging systems. Recent advances in proof technology have brought such advanced static debugging systems within reach. Methods like control-flow analysis or set-based analysis establish invariants that can identify potentially faulty program operations. Past research, however, only focused on the synthesis of the invariants and completely neglected their presentation to the programmer. We believe that the programmer must be able to inspect the inferred invariants and to browse their underlying proof. Then, if some set invariant contains surprising elements, the programmer can determine whether the result is a weakness in the proof system or whether it uncovers a flaw in the program. This paper presents MrSpidey, a user-friendly, interactive static debugger that is completely integrated into DrScheme, our program development environment. MrSpidey exposes those operations that may signal errors during an execution; it describes the sets of values the program expressions may assume; and it also provides a graphical explanation of how values flow through the program. Using MrSpidey, the programmer can easily identify and eliminate the causes of potential run-time errors. Experimental results support our belief that MrSpidey expedites the process of program debugging.
منابع مشابه
Understanding the Dynamics of Complex Lisp Programs
Recent advances in web technologies and the availability of robust Lisp libraries supporting them have made it possible to think of new ways of understanding and debugging large applications. In this paper, we will discuss two basic ideas for assessing and verifying the behaviour of Lisp programs. First, we propose to use a web browser for graphically displaying debug output in a similar but mo...
متن کاملDebugging mixed-environment programs with Blink
Programmers build large-scale systems with multiple languages to leverage legacy code and languages best suited to their problems. For instance, the same program may use Java for ease of programming and C to interface with the operating system. These programs pose significant debugging challenges, because programmers need to understand and control code across languages, which often execute in d...
متن کاملImporting the Gnu Multiple Precision Package (GMP) into Lisp, and implications for Functional Programming
Advocating the use of a Common Lisp as a central organizing environment for building scientific computing systems runs counter to the conventional wisdom, which suggests that languages like Fortran, C++, or even Java, are more suitable. We prefer Lisp based on its debugging features, interactivity, memory model, existing code-base for computer algebra and user interfaces, and for purposes of th...
متن کاملAutomatic program debugging for intelligent tutoring systems
Program debugging is an important part of the domain expertise required for intelligent tutoring systems that teach programming languages. This article explores the process by which student programs can be automatically debugged in order to increase the instructional capabilities of these systems. The research presented provides a methodology and implementation for the diagnosis and correction ...
متن کاملUnderstanding and Improving LISP Programs
We are currently investigating the creation of an didactic environment for the teaching of a programming language to approximately 1500 students each year. At this effect we are constructing a robust and perspicious system : VISION & CAN & PHENARETE (GREUSSAY 1977, GOOSSENS 1977, WERTZ 1976), a system designed to help the individual apprentice in the process of deve loping, writing and debuggi...
متن کامل